home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / Emperor_v4.0 / Emperor / Projects / automate8e.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-05-05  |  81.6 KB  |  1,850 lines

  1. #include "automate_class.h"
  2. #include "automate_fonctions.h"
  3.  
  4. ULONG noir=0;
  5. ULONG blanc=0;
  6. ULONG gris1=0;
  7. ULONG gris2=0;
  8. ULONG gris3=0;
  9. ULONG gris4=0;
  10. ULONG gris5=0;
  11. ULONG gris6=0;
  12. ULONG gris7=0;
  13. ULONG gris8=0;
  14. ULONG gris9=0;
  15. ULONG gris10=0;
  16. ULONG gris11=0;
  17. ULONG gris12=0;
  18. ULONG gris13=0;
  19. ULONG gris14=0;
  20.  
  21. struct Window *win=NULL;
  22. struct RastPort *winport=NULL;
  23. struct RastPort winport_noir;
  24. struct RastPort winport_blanc;
  25. struct RastPort winport_gris1;
  26. struct RastPort winport_gris2;
  27. struct RastPort winport_gris3;
  28. struct RastPort winport_gris4;
  29. struct RastPort winport_gris5;
  30. struct RastPort winport_gris6;
  31. struct RastPort winport_gris7;
  32. struct RastPort winport_gris8;
  33. struct RastPort winport_gris9;
  34. struct RastPort winport_gris10;
  35. struct RastPort winport_gris11;
  36. struct RastPort winport_gris12;
  37. struct RastPort winport_gris13;
  38. struct RastPort winport_gris14;
  39.  
  40. Object *winobj=NULL;
  41.  
  42. void Startup(void)
  43. {
  44.     pente=0.4;
  45.     pluie=450;
  46.     termite=0;
  47.     rayon=0;
  48.     imax=40;
  49.     jmax=40;
  50.     kmax=5;
  51.     zoom=1;
  52.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  53.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);
  54.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  55.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  56.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  57.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  58.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  59.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  60.     noir = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x0FFFFFFF, 0x0FFFFFFF, 0x0FFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  61.     blanc = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  62.     gris1 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xeFFFFFFF, 0xeFFFFFFF, 0xeFFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  63.     gris2 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xdfffffff, 0xdfffffff, 0xdfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  64.     gris3 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xcfffffff, 0xcfffffff, 0xcfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  65.     gris4 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xbfffffff, 0xbfffffff, 0xbfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  66.     gris5 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xafffffff, 0xafffffff, 0xafffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  67.     gris6 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x9fffffff, 0x9fffffff, 0x9fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  68.     gris7 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x8fffffff, 0x8fffffff, 0x8fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  69.     gris8 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x7fffffff, 0x7fffffff, 0x7fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  70.     gris9 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x6fffffff, 0x6fffffff, 0x6fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  71.     gris10 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x5fffffff, 0x5fffffff, 0x5fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  72.     gris11 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x4fffffff, 0x4fffffff, 0x4fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  73.     gris12 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x3fffffff, 0x3fffffff, 0x3fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  74.     gris13 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x2fffffff, 0x2fffffff, 0x2fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  75.     gris14 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x1fffffff, 0x1fffffff, 0x1fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  76. }
  77.  
  78. void Shutdown(void)
  79. {
  80.     ReleasePen(Screen1->ViewPort.ColorMap, noir);
  81.     ReleasePen(Screen1->ViewPort.ColorMap, blanc);
  82.     ReleasePen(Screen1->ViewPort.ColorMap, gris1);
  83.     ReleasePen(Screen1->ViewPort.ColorMap, gris2);
  84.     ReleasePen(Screen1->ViewPort.ColorMap, gris3);
  85.     ReleasePen(Screen1->ViewPort.ColorMap, gris4);
  86.     ReleasePen(Screen1->ViewPort.ColorMap, gris5);
  87.     ReleasePen(Screen1->ViewPort.ColorMap, gris6);
  88.     ReleasePen(Screen1->ViewPort.ColorMap, gris7);
  89.     ReleasePen(Screen1->ViewPort.ColorMap, gris8);
  90.     ReleasePen(Screen1->ViewPort.ColorMap, gris9);
  91.     ReleasePen(Screen1->ViewPort.ColorMap, gris10);
  92.     ReleasePen(Screen1->ViewPort.ColorMap, gris11);
  93.     ReleasePen(Screen1->ViewPort.ColorMap, gris12);
  94.     ReleasePen(Screen1->ViewPort.ColorMap, gris13);
  95.     ReleasePen(Screen1->ViewPort.ColorMap, gris14);
  96. }
  97.  
  98. void Window1_ShowWindow_Event(void)
  99. {
  100. }
  101.  
  102. void Window1_CloseWindow_Event(void)
  103. {
  104.     Emperor_QuitProgram();
  105. }
  106.  
  107. void Menu_Quit1_MenuPick_Event(void)
  108. {
  109.     Emperor_QuitProgram();
  110. }
  111.  
  112. void Menu_Information1_MenuPick_Event(void)
  113. {
  114.     Inforequest1();
  115. }
  116.  
  117. void String1_GadgetUp_Event(void)
  118. {
  119.     pente = atof(Emperor_GetGadgetAttr(String1));
  120.     if (pente<0.1 || pente >1.5)
  121.     {
  122.         Emperor_SetGadgetAttr(String1, "0.0");
  123.         pente=0.0;
  124.     }
  125.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  126.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  127. }
  128.  
  129. void Integer1_GadgetUp_Event(void)
  130. {
  131.     pluie = atoi(Emperor_GetGadgetAttr(Integer1));
  132.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  133.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  134. }
  135.  
  136. void Integer2_GadgetUp_Event(void)
  137. {
  138.     termite = atoi(Emperor_GetGadgetAttr(Integer2));
  139.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  140.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  141. }
  142.  
  143. void Integer3_GadgetUp_Event(void)
  144. {
  145.     rayon = atoi(Emperor_GetGadgetAttr(Integer3));
  146.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  147.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  148. }
  149.  
  150. void Integer4_GadgetUp_Event(void)
  151. {
  152.     imax = atoi(Emperor_GetGadgetAttr(Integer4));
  153.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  154.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  155. }
  156.  
  157. void Integer5_GadgetUp_Event(void)
  158. {
  159.     jmax = atoi(Emperor_GetGadgetAttr(Integer5));
  160.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  161.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  162.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  163. }
  164.  
  165. void Integer6_GadgetUp_Event(void)
  166. {
  167.     kmax = atoi(Emperor_GetGadgetAttr(Integer6));
  168.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);  
  169.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  170.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  171. }
  172.  
  173. void Checkbox1_GadgetUp_Event(void)         //sauver MNA
  174. {
  175.     if(Emperor_GetGadgetAttr(Checkbox1))
  176.     {
  177.         MNA=TRUE;
  178.     }
  179. }
  180.  
  181. void Checkbox2_GadgetUp_Event(void)
  182. {
  183.     if(Emperor_GetGadgetAttr(Checkbox2))
  184.     {
  185.         previsual=TRUE;
  186.     }
  187. }
  188.  
  189. void Slider1_GadgetUp_Event(void)
  190. {
  191.     STRPTR temp=0;
  192.     temp=Emperor_GetGadgetAttr(Slider1);
  193.     Emperor_SetGadgetAttr(String2, temp);
  194.     zoom=stringtoint(temp)
  195. }
  196.  
  197. void Button2_GadgetUp_Event(void)            //valeurs moyennes
  198. {
  199.     pente=0.4;
  200.     pluie=450;
  201.     imax=40;
  202.     jmax=40;
  203.     kmax=5;
  204.     zoom=1;
  205.     Emperor_SetGadgetAttr(String1, "0.4");
  206.     SetGadgetAttrs(Integer1, Window1, NULL, INTEGER_Number, 450, TAG_DONE);
  207.     SetGadgetAttrs(Integer4, Window1, NULL, INTEGER_Number, 40, TAG_DONE);
  208.     SetGadgetAttrs(Integer5, Window1, NULL, INTEGER_Number, 40, TAG_DONE);
  209.     SetGadgetAttrs(Integer6, Window1, NULL, INTEGER_Number, 5, TAG_DONE);
  210.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  211.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);
  212.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  213.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  214.     SetGadgetAttrs(Slider1, Window1, NULL, SLIDER_Level, 1, TAG_DONE);
  215.     STRPTR temp2=0;
  216.     temp2=Emperor_GetGadgetAttr(Slider1);
  217.     Emperor_SetGadgetAttr(String2, temp2);
  218. }
  219.  
  220. void Button1_GadgetUp_Event(void)
  221. {   
  222.     int ligne1=0, ligne2=0, ligne3=0, ligne4=0, ligne5=0, ligne6=0, ligne7=0,
  223.     ligne8=0, ligne9=0, ligne10=0, ligne11=0, ligne12=0, ligne13=0,
  224.     ligne14=0, ligne15=0, ligne16=0, ligne17=0, ligne18=0, ligne19=0,     
  225.     ligne20=0, ligne21=0, ligne22=0, ligne23=0, ligne24=0, i=0, j=0, k=0, l=0,
  226.     rayon_max=0, random=0, valeur_max=0, resolution=0, a=0, b=0, kk=0, max_tick=0,
  227.     temp=0, combien=0, memoire=0, loop_tick=0, temp_tick=0;
  228.     float nelevation=0.0, hauteur=0.0, temp_float=0.0;
  229.     STRPTR tick=0;
  230.     BOOL fermer=FALSE, interrupt=FALSE;
  231.     FILE *fz;
  232.  
  233.     valeur_max=15;
  234.     hauteur=5.0;
  235.     resolution=2;
  236.  
  237.     Tableau <Cellule> C(imax, jmax, kmax+1);
  238.     memoire=sizeof(C);
  239.     memoire=memoire*imax*jmax*kmax;
  240.     //printf("mémoire= %d"\n, memoire);
  241.  
  242.     winobj = (Object*) WindowObject,
  243.             WA_Left,    100,
  244.             WA_Top,     100,
  245.             WA_Width,   (imax*zoom)+40,
  246.             WA_Height,  (jmax*zoom)+40,
  247.             WA_DragBar, TRUE,
  248.             //WA_Title,   "Sortie graphique",
  249.             WA_PubScreen, Screen1,
  250.             //WA_CloseGadget,  TRUE,
  251.             WA_DepthGadget, TRUE,
  252.             //WA_SmartRefresh, TRUE,
  253.             WA_SuperBitMap, TRUE,
  254.             WA_IDCMP,  IDCMP_GADGETDOWN | IDCMP_GADGETUP | IDCMP_GADGETHELP | IDCMP_MENUPICK | IDCMP_MENUHELP | IDCMP_CLOSEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_NEWSIZE | IDCMP_CHANGEWINDOW | IDCMP_SIZEVERIFY | IDCMP_REFRESHWINDOW | IDCMP_INTUITICKS,
  255.             WA_RMBTrap, TRUE,
  256.     EndWindow;
  257.  
  258.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  259.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  260.     if(previsual)
  261.     {
  262.         SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  263.     }
  264.     else
  265.     {
  266.         SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  267.     }
  268.     SetGadgetAttrs(String1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  269.     SetGadgetAttrs(Integer1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  270.     SetGadgetAttrs(Integer2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  271.     SetGadgetAttrs(Integer3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  272.     SetGadgetAttrs(Integer4, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  273.     SetGadgetAttrs(Integer5, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  274.     SetGadgetAttrs(Integer6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  275.     SetGadgetAttrs(Button1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  276.     SetGadgetAttrs(Button2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  277.     SetGadgetAttrs(Slider1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  278.     SetGadgetAttrs(Checkbox1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  279.     SetGadgetAttrs(Checkbox2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  280.  
  281.     /*win = RA_OpenWindow (winobj);
  282.     winport = win->RPort;
  283.     winport_noir = *win->RPort;
  284.     winport_blanc = *win->RPort;
  285.     winport_gris1 = *win->RPort;
  286.     winport_gris2 = *win->RPort;
  287.     winport_gris3 = *win->RPort;
  288.     winport_gris4 = *win->RPort;
  289.     winport_gris5 = *win->RPort;
  290.     winport_gris6 = *win->RPort;
  291.     winport_gris7 = *win->RPort;
  292.     winport_gris8 = *win->RPort;
  293.     winport_gris9 = *win->RPort;
  294.     winport_gris10 = *win->RPort;
  295.     winport_gris11 = *win->RPort;
  296.     winport_gris12 = *win->RPort;
  297.     winport_gris13 = *win->RPort;
  298.     winport_gris14 = *win->RPort;
  299.     SetAPen( &winport_noir, noir );
  300.     SetAPen( &winport_blanc, blanc );
  301.     SetAPen( &winport_gris1, gris1 );
  302.     SetAPen( &winport_gris2, gris2 );
  303.     SetAPen( &winport_gris3, gris3 );
  304.     SetAPen( &winport_gris4, gris4 );
  305.     SetAPen( &winport_gris5, gris5 );
  306.     SetAPen( &winport_gris6, gris6 );
  307.     SetAPen( &winport_gris7, gris7 );
  308.     SetAPen( &winport_gris8, gris8 );
  309.     SetAPen( &winport_gris9, gris9 );
  310.     SetAPen( &winport_gris10, gris10 );
  311.     SetAPen( &winport_gris11, gris11 );
  312.     SetAPen( &winport_gris12, gris12 );
  313.     SetAPen( &winport_gris13, gris13 );
  314.     SetAPen( &winport_gris14, gris14 );*/
  315.  
  316. /*appel au constructeur*/
  317.     
  318.     for(k=0; k<=kmax; k++)
  319.     {                                     
  320.         for(j=0; j<jmax; j++)             
  321.         {                                 
  322.             for(i=0; i<imax; i++)         
  323.             {                             
  324.                 C(i,j,k);
  325.             }                             
  326.         }                                 
  327.     }
  328.  
  329. /*remplissage aléatoire de la génération 0*/  
  330.  
  331.     srand((unsigned) time(NULL));
  332.     for(j=0; j<jmax; j++)                     
  333.     {                                         
  334.         for(i=0; i<imax; i++)                 
  335.         {                                     
  336.             random=rand()%valeur_max;         
  337.             C(i,j,0).set_valeur(random);      
  338.         }                                                              
  339.     }
  340.  
  341. /*termitisation et élévation*/  
  342.  
  343.     rayon_max=(int)rayon;
  344.     for(int t=0; t<termite; t++)  
  345.     {                             
  346.         temp=0, kk=0;;
  347.         temp=imax-(2*rayon_max);              //prendre les coordonnées i et j 
  348.         random=rand()%temp;                   //aléatoirement pour chaque termitière
  349.         i=random+rayon_max;       
  350.         temp=jmax-(2*rayon_max);  
  351.         random=rand()%temp;       
  352.         j=random+rayon_max;       
  353.         random=rand()%kmax;       
  354.         for(k=random; k<=kmax; k++)                           //termitière apparaît à un moment k aléatoire
  355.         {                                                     //mais ne dépasse pas la limite kmax
  356.             if(k!=random && (k%10)==0 && kk<rayon_max)        //tous les 10 ans le rayon augmente jusquà concurrence du rayon max
  357.             {                                                 //
  358.                 kk++;
  359.             }
  360.             C(i,j,k).set_termite(TRUE);                          //activer le bit termite
  361.             C(i,j,k).set_elevation((hauteur*(rayon_max-rayon))/    //elevation dépend du rayon
  362.             (3*resolution));                                       //et de la resolution
  363.             C(i,j,k).set_age_termite(k-random);                          //l'âge...
  364.             C(i,j,k).set_Crayon(kk);
  365.             rayon=C(i,j,k).retour_Crayon();
  366.             if(rayon>0 && kk<=rayon_max)                        //balaie les environs
  367.             {
  368.                 for(b=j-(int)rayon; b<=j+(int)rayon; b++)       //de j
  369.                 {
  370.                     for(a=i-(int)rayon; a<=i+(int)rayon; a++)   //et de i
  371.                     {
  372.                         C(a,b,k).set_influence(TRUE);              //dans ces environs, activer l'influence
  373.                         /*int temp1=a-i;
  374.                         int temp2=b-j;                          
  375.                         if(temp1>0)
  376.                             temp1=temp1*(-1);
  377.                         if(temp2>0)
  378.                             temp2=temp2*(-1);
  379.                         float temp3=temp1+temp2+(2*(int)rayon);
  380.                         if(temp3==0)
  381.                             temp3=1;
  382.                         nelevation=(temp3);*/                      //on dirait que ça ne sert a rien?
  383.                         if(a!=i || b!=j)                         //la nouvelle élévation dépend de
  384.                         {                                        //l'éloignement, de la résolution et de la hauteur d'origine
  385.                             C(a,b,k).set_elevation((hauteur*(rayon_max-rayon))/(5*resolution));
  386.                         }
  387.                     }
  388.                 }
  389.             }
  390.             if(kk==rayon_max)
  391.             {
  392.                 C(i,j,k).set_termite(FALSE);
  393.             }  
  394.         }
  395.     }
  396.  
  397. /*calcul des pentes et MNA*/   
  398.  
  399.     for(k=0; k<=kmax; k++)
  400.     {                                                             
  401.         for(j=0; j<jmax; j++)                                     
  402.         {                                                         
  403.             for(i=0; i<imax; i++)                                 
  404.             {                                                                
  405.                 C(i,j,k).set_pente(pente);                    
  406.                 C(i,j,k).set_altitude(j, resolution);         
  407.                 if(C(i,j,k).retour_influence()==1)      
  408.                 {                                             
  409.                     temp_float=0.0;
  410.                     temp_float=C(i,j,k).retour_altitude()-C(i,j-1,k)
  411.                     .retour_altitude();                           
  412.                     C(i,j,k).set_pente(temp_float);
  413.                 }
  414.                 if(C(i,j-1,k).retour_influence()==TRUE &&
  415.                 C(i,j,k).retour_influence()==FALSE)
  416.                 {                                        
  417.                     temp_float=0.0;
  418.                     temp_float=C(i,j,k).retour_altitude()-
  419.                     C(i,j-1,k).retour_altitude();        
  420.                     C(i,j,k).set_pente(temp_float);
  421.                 }                                        
  422.             }
  423.         }
  424.     }
  425.     if(MNA)
  426.     {               
  427.         int choix_gen[101]={0}, buffer=0;
  428.         char *MNA=0;
  429.         float minimum=0.0, maximum=0.0, difference=0.0;
  430.         minimum=10000.0;                           //sinon minimum reste à 0
  431.         for(k=0; k<=kmax; k++)                                
  432.         {                                                     
  433.             for(j=0; j<jmax; j++)                             
  434.             {                                                 
  435.                 for(i=0; i<imax; i++)                         
  436.                 {                                             
  437.                     temp_float=C(i,j,k).retour_altitude();
  438.                     if(temp_float>maximum)
  439.                         maximum=temp_float;
  440.                     if(temp_float<minimum)
  441.                         minimum=temp_float;
  442.                 }                                             
  443.             }                                                                
  444.         }                                                            
  445.         difference=maximum-minimum;                           
  446.         
  447.         for(i=0; i<=kmax; i++)    
  448.         {                         
  449.             choix_gen[i]=i;       
  450.         }                         
  451.         for(l=0; l<kmax; l++)
  452.         {                                                           
  453.             k=choix_gen[l];                                         
  454.             MNA=new char[10];                                       
  455.             strcpy(MNA, pioche_MNA(k));                             
  456.             fz = fopen(MNA, "w");
  457.             fputs ("P2\n", fz);
  458.             fputs ("# ", fz);
  459.             fputs(MNA, fz);
  460.             fputs ("  \n", fz);
  461.             fputs (inttostring(imax), fz);
  462.             fputs ("  ", fz);
  463.             fputs (inttostring(jmax), fz);
  464.             fputs ("  \n255\n", fz);
  465.             for(j=0; j<jmax; j++)
  466.             {
  467.                 for(i=0; i<imax; i++)
  468.                 {
  469.                     fputs(inttostring(int(((C(i,j,k).retour_altitude()-minimum)/difference)*255)), fz);
  470.                     fputs("  ", fz);
  471.                 }
  472.                 fputs(" \n", fz);
  473.             }
  474.             delete [] MNA;
  475.             fclose(fz);
  476.         }
  477.     }
  478.  
  479. /*début de la fonction de transition*/  
  480.  
  481.     if(kmax!=0)
  482.     {                                 
  483.         int n=0, jj=0, ii=0, concave=0, convexe=0, concave_max=0, 
  484.         convexe_max=0, montant=0, montant_max=0, descendant=0,     
  485.         descendant_max=0, concavexite=0, modification=0, somme1=0,
  486.         nvaleur=0;
  487.         max_tick=200;
  488.         ligne1=ligne2=ligne3=ligne4=ligne5=ligne6=ligne7=
  489.         ligne8=ligne9=ligne10=ligne11=ligne12=ligne13=     
  490.         ligne14=ligne15=-1;                                
  491.         ligne16=ligne17=ligne18=ligne19=ligne20=ligne21=   
  492.         ligne22=ligne23=ligne24=1;
  493.  
  494.         if(previsual)
  495.         {
  496.             win = RA_OpenWindow (winobj);
  497.             winport = win->RPort;
  498.             winport_noir = *win->RPort;
  499.             winport_blanc = *win->RPort;
  500.             winport_gris1 = *win->RPort;
  501.             winport_gris2 = *win->RPort;
  502.             winport_gris3 = *win->RPort;
  503.             winport_gris4 = *win->RPort;
  504.             winport_gris5 = *win->RPort;
  505.             winport_gris6 = *win->RPort;
  506.             winport_gris7 = *win->RPort;
  507.             winport_gris8 = *win->RPort;
  508.             winport_gris9 = *win->RPort;
  509.             winport_gris10 = *win->RPort;
  510.             winport_gris11 = *win->RPort;
  511.             winport_gris12 = *win->RPort;
  512.             winport_gris13 = *win->RPort;
  513.             winport_gris14 = *win->RPort;
  514.             SetAPen( &winport_noir, noir );
  515.             SetAPen( &winport_blanc, blanc );
  516.             SetAPen( &winport_gris1, gris1 );
  517.             SetAPen( &winport_gris2, gris2 );
  518.             SetAPen( &winport_gris3, gris3 );
  519.             SetAPen( &winport_gris4, gris4 );
  520.             SetAPen( &winport_gris5, gris5 );
  521.             SetAPen( &winport_gris6, gris6 );
  522.             SetAPen( &winport_gris7, gris7 );
  523.             SetAPen( &winport_gris8, gris8 );
  524.             SetAPen( &winport_gris9, gris9 );
  525.             SetAPen( &winport_gris10, gris10 );
  526.             SetAPen( &winport_gris11, gris11 );
  527.             SetAPen( &winport_gris12, gris12 );
  528.             SetAPen( &winport_gris13, gris13 );
  529.             SetAPen( &winport_gris14, gris14 );
  530.         }
  531.  
  532.         for(k=0; k<kmax; k++)   
  533.         {                                                              
  534.             for(j=0; j<jmax; j++)
  535.             {                                                          
  536.                 for(i=0;i<imax; i++)                                   
  537.                 {                                                      
  538.                     if(concave!=0 || convexe!=0 || concavexite!=0 || montant!=0 || descendant!=0)
  539.                     {
  540.                         concave=convexe=concavexite=montant=descendant=0;
  541.                     }                    
  542.                     //modification=norm_pente(pente);
  543.                     if(j==0)
  544.                     {
  545.                         for(ii=0; ii<imax; ii++)
  546.                         {
  547.                             for(n=0; n<=14; n++)
  548.                             {
  549.                                 C(ii,(j-1)-n,k).set_altitude(C(ii,j-n,k)
  550.                                 .retour_altitude()+(pente/resolution));
  551.                             }
  552.                         }
  553.                     }
  554.                     if(j==1)
  555.                     {
  556.                         for(ii=0; ii<imax; ii++)
  557.                         {
  558.                             for(n=0; n<=13; n++)
  559.                             {
  560.                                 C(ii,(j-2)-n,k).set_altitude(C(ii,(j-1)-n,k)
  561.                                 .retour_altitude()+(pente/resolution));
  562.                             }
  563.                         }
  564.                     }
  565.                     if(j==2)
  566.                     {
  567.                         for(ii=0; ii<imax; ii++)
  568.                         {
  569.                             for(n=0; n<=12; n++)
  570.                             {
  571.                                 C(ii,(j-3)-n,k).set_altitude(C(ii,(j-2)-n,k)
  572.                                 .retour_altitude()+(pente/resolution));
  573.                             }
  574.                         }
  575.                     }
  576.                     if(j==3)
  577.                     {
  578.                         for(ii=0; ii<imax; ii++)
  579.                         {
  580.                             for(n=0; n<=11; n++)
  581.                             {
  582.                                 C(ii,(j-4)-n,k).set_altitude(C(ii,(j-3)-n,k)
  583.                                 .retour_altitude()+(pente/resolution));
  584.                             }
  585.                         }
  586.                     }
  587.                     if(j==4)
  588.                     {
  589.                         for(ii=0; ii<imax; ii++)
  590.                         {
  591.                             for(n=0; n<=10; n++)
  592.                             {
  593.                                 C(ii,(j-5)-n,k).set_altitude(C(ii,(j-4)-n,k)
  594.                                 .retour_altitude()+(pente/resolution));
  595.                             }
  596.                         }
  597.                     }
  598.                     if(j==5)
  599.                     {
  600.                         for(ii=0; ii<imax; ii++)
  601.                         {
  602.                             for(n=0; n<=9; n++)
  603.                             {
  604.                                 C(ii,(j-6)-n,k).set_altitude(C(ii,(j-5)-n,k)
  605.                                 .retour_altitude()+(pente/resolution));
  606.                             }
  607.                         }
  608.                     }
  609.                     if(j==6)
  610.                     {
  611.                         for(ii=0; ii<imax; ii++)
  612.                         {
  613.                             for(n=0; n<=8; n++)
  614.                             {
  615.                                 C(ii,(j-7)-n,k).set_altitude(C(ii,(j-6)-n,k)
  616.                                 .retour_altitude()+(pente/resolution));
  617.                             }
  618.                         }
  619.                     }
  620.                     if(j==7)
  621.                     {
  622.                         for(ii=0; ii<imax; ii++)
  623.                         {
  624.                             for(n=0; n<=7; n++)
  625.                             {
  626.                                 C(ii,(j-8)-n,k).set_altitude(C(ii,(j-7)-n,k)
  627.                                 .retour_altitude()+(pente/resolution));
  628.                             }
  629.                         }
  630.                     }
  631.                     if(j==8)
  632.                     {
  633.                         for(ii=0; ii<imax; ii++)
  634.                         {
  635.                             for(n=0; n<=6; n++)
  636.                             {
  637.                                 C(ii,(j-9)-n,k).set_altitude(C(ii,(j-8)-n,k)
  638.                                 .retour_altitude()+(pente/resolution));
  639.                             }
  640.                         }
  641.                     }
  642.                     if(j==9)
  643.                     {
  644.                         for(ii=0; ii<imax; ii++)
  645.                         {
  646.                             for(n=0; n<=5; n++)
  647.                             {
  648.                                 C(ii,(j-10)-n,k).set_altitude(C(ii,(j-9)-n,k)
  649.                                 .retour_altitude()+(pente/resolution));
  650.                             }
  651.                         }
  652.                     }
  653.                     if(j==10)
  654.                     {
  655.                         for(ii=0; ii<imax; ii++)
  656.                         {
  657.                             for(n=0; n<=4; n++)
  658.                             {
  659.                                 C(ii,(j-11)-n,k).set_altitude(C(ii,(j-10)-n,k)
  660.                                 .retour_altitude()+(pente/resolution));
  661.                             }
  662.                         }
  663.                     }
  664.                     if(j==11)
  665.                     {
  666.                         for(ii=0; ii<imax; ii++)
  667.                         {
  668.                             for(n=0; n<=3; n++)
  669.                             {
  670.                                 C(ii,(j-12)-n,k).set_altitude(C(ii,(j-11)-n,k)
  671.                                 .retour_altitude()+(pente/resolution));
  672.                             }
  673.                         }
  674.                     }
  675.                     if(j==12)
  676.                     {
  677.                         for(ii=0; ii<imax; ii++)
  678.                         {
  679.                             for(n=0; n<=2; n++)
  680.                             {
  681.                                 C(ii,(j-13)-n,k).set_altitude(C(ii,(j-12)-n,k)
  682.                                 .retour_altitude()+(pente/resolution));
  683.                             }
  684.                         }
  685.                     }
  686.                     if(j==13)
  687.                     {
  688.                         for(ii=0; ii<imax; ii++)
  689.                         {
  690.                             for(n=0; n<=1; n++)
  691.                             {
  692.                                 C(ii,(j-14)-n,k).set_altitude(C(ii,(j-13)-n,k)
  693.                                 .retour_altitude()+(pente/resolution));
  694.                             }
  695.                         }
  696.                     }
  697.                     if(j==14)
  698.                     {
  699.                         for(ii=0; ii<imax; ii++)
  700.                         {
  701.                             for(n=0; n<=0; n++)
  702.                             {
  703.                                 C(ii,(j-15)-n,k).set_altitude(C(ii,(j-14)-n,k)
  704.                                 .retour_altitude()+(pente/resolution));
  705.                             }
  706.                         }
  707.                     }
  708.                     if(j==jmax-1)
  709.                     {
  710.                         for(ii=0; ii<imax; ii++)
  711.                         {
  712.                             for(n=0; n<=14; n++)
  713.                             {
  714.                                 C(ii,(j+1)+n,k).set_altitude(C(ii,j+n,k)
  715.                                 .retour_altitude()-(pente/resolution));
  716.                             }
  717.                         }
  718.                     }
  719.                     if(j==jmax-2)
  720.                     {
  721.                         for(ii=0; ii<imax; ii++)
  722.                         {
  723.                             for(n=0; n<=13; n++)
  724.                             {
  725.                                 C(ii,(j+2)+n,k).set_altitude(C(ii,(j+1)+n,k)
  726.                                 .retour_altitude()-(pente/resolution));
  727.                             }
  728.                         }
  729.                     }
  730.                     if(j==jmax-3)
  731.                     {
  732.                         for(ii=0; ii<imax; ii++)
  733.                         {
  734.                             for(n=0; n<=12; n++)
  735.                             {
  736.                                 C(i,(j+3)+n,k).set_altitude(C(ii,(j+2)+n,k)
  737.                                 .retour_altitude()-(pente/resolution));
  738.                             }
  739.                         }
  740.                     }
  741.                     if(j==jmax-4)
  742.                     {
  743.                         for(ii=0; ii<imax; ii++)
  744.                         {
  745.                             for(n=0; n<=11; n++)
  746.                             {
  747.                                 C(i,(j+4)+n,k).set_altitude(C(ii,(j+3)+n,k)
  748.                                 .retour_altitude()-(pente/resolution));
  749.                             }
  750.                         }
  751.                     }
  752.                     if(j==jmax-5)
  753.                     {
  754.                         for(ii=0; ii<imax; ii++)
  755.                         {
  756.                             for(n=0; n<=10; n++)
  757.                             {
  758.                                 C(i,(j+5)+n,k).set_altitude(C(ii,(j+4)+n,k)
  759.                                 .retour_altitude()-(pente/resolution));
  760.                             }
  761.                         }
  762.                     }
  763.                     if(j==jmax-6)
  764.                     {
  765.                         for(ii=0; ii<imax; ii++)
  766.                         {
  767.                             for(n=0; n<=9; n++)
  768.                             {
  769.                                 C(i,(j+6)+n,k).set_altitude(C(ii,(j+5)+n,k)
  770.                                 .retour_altitude()-(pente/resolution));
  771.                             }
  772.                         }
  773.                     }
  774.                     if(j==jmax-7)
  775.                     {
  776.                         for(ii=0; ii<imax; ii++)
  777.                         {
  778.                             for(n=0; n<=8; n++)
  779.                             {
  780.                                 C(i,(j+7)+n,k).set_altitude(C(ii,(j+6)+n,k)
  781.                                 .retour_altitude()-(pente/resolution));
  782.                             }
  783.                         }
  784.                     }
  785.                     if(j==jmax-8)
  786.                     {
  787.                         for(ii=0; ii<imax; ii++)
  788.                         {
  789.                             for(n=0; n<=7; n++)
  790.                             {
  791.                                 C(i,(j+8)+n,k).set_altitude(C(ii,(j+7)+n,k)
  792.                                 .retour_altitude()-(pente/resolution));
  793.                             }
  794.                         }
  795.                     }
  796.                     if(j==jmax-9)
  797.                     {
  798.                         for(ii=0; ii<imax; ii++)
  799.                         {
  800.                             for(n=0; n<=6; n++)
  801.                             {
  802.                                 C(i,(j+9)+n,k).set_altitude(C(ii,(j+8)+n,k)
  803.                                 .retour_altitude()-(pente/resolution));
  804.                             }
  805.                         }
  806.                     }
  807.                     if(j==jmax-10)
  808.                     {
  809.                         for(ii=0; ii<imax; ii++)
  810.                         {
  811.                             for(n=0; n<=5; n++)
  812.                             {
  813.                                 C(i,(j+10)+n,k).set_altitude(C(ii,(j+9)+n,k)
  814.                                 .retour_altitude()-(pente/resolution));
  815.                             }
  816.                         }
  817.                     }
  818.                     if(j==jmax-11)
  819.                     {
  820.                         for(ii=0; ii<imax; ii++)
  821.                         {
  822.                             for(n=0; n<=4; n++)
  823.                             {
  824.                                 C(i,(j+11)+n,k).set_altitude(C(ii,(j+10)+n,k)
  825.                                 .retour_altitude()-(pente/resolution));
  826.                             }
  827.                         }
  828.                     }
  829.                     if(j==jmax-12)
  830.                     {
  831.                         for(ii=0; ii<imax; ii++)
  832.                         {
  833.                             for(n=0; n<=3; n++)
  834.                             {
  835.                                 C(i,(j+12)+n,k).set_altitude(C(ii,(j+11)+n,k)
  836.                                 .retour_altitude()-(pente/resolution));
  837.                             }
  838.                         }
  839.                     }
  840.                     if(j==jmax-13)
  841.                     {
  842.                         for(ii=0; ii<imax; ii++)
  843.                         {
  844.                             for(n=0; n<=2; n++)
  845.                             {
  846.                                 C(i,(j+13)+n,k).set_altitude(C(ii,(j+12)+n,k)
  847.                                 .retour_altitude()-(pente/resolution));
  848.                             }
  849.                         }
  850.                     }
  851.                     if(j==jmax-14)
  852.                     {
  853.                         for(ii=0; ii<imax; ii++)
  854.                         {
  855.                             for(n=0; n<=1; n++)
  856.                             {
  857.                                 C(i,(j+14)+n,k).set_altitude(C(ii,(j+13)+n,k)
  858.                                 .retour_altitude()-(pente/resolution));
  859.                             }
  860.                         }
  861.                     }
  862.                     if(j==jmax-15)
  863.                     {
  864.                         for(ii=0; ii<imax; ii++)
  865.                         {
  866.                             for(n=0; n<=0; n++)
  867.                             {
  868.                                 C(i,(j+15)+n,k).set_altitude(C(ii,(j+14)+n,k)
  869.                                 .retour_altitude()-(pente/resolution));
  870.                             }
  871.                         }
  872.                     }
  873.  
  874.                     if(j<(jmax-1-rayon_max))
  875.                     {
  876.                         for(jj=j; jj>=j-rayon_max+1; jj--)          
  877.                         {
  878.                             if(C(i,jj,k).retour_altitude()>C(i,jj-1,k)
  879.                             .retour_altitude())
  880.                             {
  881.                                 montant++;                            
  882.                                 if(montant_max<montant)
  883.                                 {
  884.                                     montant_max=montant;
  885.                                 }
  886.                             }
  887.                             if(C(i,jj,k).retour_altitude()<C(i,jj-1,k)
  888.                             .retour_altitude())
  889.                             {
  890.                                 descendant++;
  891.                                 if(descendant_max<descendant)
  892.                                 {
  893.                                     descendant_max=descendant;
  894.                                 }
  895.                             }
  896.                         }
  897.  
  898.                         for(jj=j; jj<=j+rayon_max-1; jj++)        
  899.                         {
  900.                             if(C(i,jj,k).retour_altitude()<C(i,jj+1,k)
  901.                             .retour_altitude())
  902.                             {
  903.                                 montant++;                               
  904.                                 if(montant_max<montant)
  905.                                 {
  906.                                     montant_max=montant;
  907.                                 }
  908.                             }
  909.                             if(C(i,jj,k).retour_altitude()>C(i,jj+1,k)
  910.                             .retour_altitude())
  911.                             {
  912.                                 descendant++;                                
  913.                                 if(descendant_max<descendant)
  914.                                 {
  915.                                     descendant_max=descendant;
  916.                                 }
  917.                             }
  918.                         }
  919.                     }
  920.  
  921.                     if(montant>0 && montant<=descendant)
  922.                     {
  923.                         concavexite=1;
  924.                     }
  925.                     if(montant>descendant)
  926.                     {
  927.                         concavexite=-1;
  928.                     }
  929.                     if(montant<=descendant && C(i,j,k).retour_influence()!=0)
  930.                     {
  931.                         concavexite=-1;
  932.                     }
  933.  
  934.                     somme1=
  935.  
  936.                     C(i-1,j-15,k).retour_valeur()*(ligne1)*(sens_pente(C(i-1,j-15,k).retour_pente()))+
  937.                     C(i,j-15,k).retour_valeur()*(ligne1)*(sens_pente(C(i,j-15,k).retour_pente()))+
  938.                     C(i+1,j-15,k).retour_valeur()*(ligne1)*(sens_pente(C(i+1,j-15,k).retour_pente()))+
  939.  
  940.                     C(i-1,j-14,k).retour_valeur()*(ligne2)*(sens_pente(C(i-1,j-14,k).retour_pente()))+
  941.                     C(i,j-14,k).retour_valeur()*(ligne2)*(sens_pente(C(i,j-14,k).retour_pente()))+
  942.                     C(i+1,j-14,k).retour_valeur()*(ligne2)*(sens_pente(C(i+1,j-14,k).retour_pente()))+
  943.  
  944.                     C(i-1,j-13,k).retour_valeur()*(ligne3)*(sens_pente(C(i-1,j-13,k).retour_pente()))+
  945.                     C(i,j-13,k).retour_valeur()*(ligne3)*(sens_pente(C(i,j-13,k).retour_pente()))+
  946.                     C(i+1,j-13,k).retour_valeur()*(ligne3)*(sens_pente(C(i+1,j-13,k).retour_pente()))+
  947.  
  948.                     C(i-1,j-12,k).retour_valeur()*(ligne4)*(sens_pente(C(i-1,j-12,k).retour_pente()))+
  949.                     C(i,j-12,k).retour_valeur()*(ligne4)*(sens_pente(C(i,j-12,k).retour_pente()))+
  950.                     C(i+1,j-12,k).retour_valeur()*(ligne4)*(sens_pente(C(i+1,j-12,k).retour_pente()))+
  951.  
  952.                     C(i-1,j-11,k).retour_valeur()*(ligne5)*(sens_pente(C(i-1,j-11,k).retour_pente()))+
  953.                     C(i,j-11,k).retour_valeur()*(ligne5)*(sens_pente(C(i,j-11,k).retour_pente()))+
  954.                     C(i+1,j-11,k).retour_valeur()*(ligne5)*(sens_pente(C(i+1,j-11,k).retour_pente()))+
  955.  
  956.                     C(i-1,j-10,k).retour_valeur()*(ligne6)*(sens_pente(C(i-1,j-10,k).retour_pente()))+
  957.                     C(i,j-10,k).retour_valeur()*(ligne6)*(sens_pente(C(i,j-10,k).retour_pente()))+
  958.                     C(i+1,j-10,k).retour_valeur()*(ligne6)*(sens_pente(C(i+1,j-10,k).retour_pente()))+
  959.  
  960.                     C(i-1,j-9,k).retour_valeur()*(ligne7)*(sens_pente(C(i-1,j-9,k).retour_pente()))+
  961.                     C(i,j-9,k).retour_valeur()*(ligne7)*(sens_pente(C(i,j-9,k).retour_pente()))+
  962.                     C(i+1,j-9,k).retour_valeur()*(ligne7)*(sens_pente(C(i+1,j-9,k).retour_pente()))+
  963.  
  964.                     C(i-1,j-8,k).retour_valeur()*(ligne8)*(sens_pente(C(i-1,j-8,k).retour_pente()))+
  965.                     C(i,j-8,k).retour_valeur()*(ligne8)*(sens_pente(C(i,j-8,k).retour_pente()))+
  966.                     C(i+1,j-8,k).retour_valeur()*(ligne8)*(sens_pente(C(i+1,j-8,k).retour_pente()))+
  967.  
  968.                     C(i-1,j-7,k).retour_valeur()*(ligne9)*(sens_pente(C(i-1,j-7,k).retour_pente()))+
  969.                     C(i,j-7,k).retour_valeur()*(ligne9)*(sens_pente(C(i,j-7,k).retour_pente()))+
  970.                     C(i+1,j-7,k).retour_valeur()*(ligne9)*(sens_pente(C(i+1,j-7,k).retour_pente()))+
  971.  
  972.                     C(i-1,j-6,k).retour_valeur()*(ligne10)*(sens_pente(C(i-1,j-6,k).retour_pente()))+
  973.                     C(i,j-6,k).retour_valeur()*(ligne10)*(sens_pente(C(i,j-6,k).retour_pente()))+
  974.                     C(i+1,j-6,k).retour_valeur()*(ligne10)*(sens_pente(C(i+1,j-6,k).retour_pente()))+
  975.  
  976.                     C(i-1,j-5,k).retour_valeur()*(ligne11)*(sens_pente(C(i-1,j-5,k).retour_pente()))+
  977.                     C(i,j-5,k).retour_valeur()*(ligne11)*(sens_pente(C(i,j-5,k).retour_pente()))+
  978.                     C(i+1,j-5,k).retour_valeur()*(ligne11)*(sens_pente(C(i+1,j-5,k).retour_pente()))+
  979.  
  980.                     C(i-1,j-4,k).retour_valeur()*(ligne12+norm_pente(C(i-1,j-4,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  981.                     C(i,j-4,k).retour_valeur()*(ligne12+norm_pente(C(i,j-4,k).retour_pente()))*(sens_pente(C(i,j-4,k).retour_pente()))+
  982.                     C(i+1,j-4,k).retour_valeur()*(ligne12+norm_pente(C(i+1,j-4,k).retour_pente()))*(sens_pente(C(i+1,j-4,k).retour_pente()))+
  983.  
  984.                     C(i-1,j-3,k).retour_valeur()*(ligne13+norm_pente(C(i-1,j-3,k).retour_pente()))*(sens_pente(C(i-1,j-5,k).retour_pente()))+
  985.                     C(i,j-3,k).retour_valeur()*(ligne13+norm_pente(C(i,j-3,k).retour_pente()))*(sens_pente(C(i,j-5,k).retour_pente()))+
  986.                     C(i+1,j-3,k).retour_valeur()*(ligne13+norm_pente(C(i+1,j-3,k).retour_pente()))*(sens_pente(C(i+1,j-5,k).retour_pente()))+
  987.  
  988.                     C(i-1,j-2,k).retour_valeur()*(ligne14+norm_pente(C(i-1,j-2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  989.                     C(i,j-2,k).retour_valeur()*(ligne14+norm_pente(C(i,j-2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  990.                     C(i+1,j-2,k).retour_valeur()*(ligne14+norm_pente(C(i+1,j-2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  991.  
  992.                     C(i-1,j-1,k).retour_valeur()*(0)+
  993.                     C(i,j-1,k).retour_valeur()*(ligne15+norm_pente(C(i,j-1,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  994.                     C(i+1,j-1,k).retour_valeur()*(0)+
  995.  
  996.                     C(i-1,j,k).retour_valeur()*(ligne16+norm_pente(C(i-1,j,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  997.                     C(i+1,j,k).retour_valeur()*(ligne16+norm_pente(C(i+1,j,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  998.  
  999.                     C(i-1,j+1,k).retour_valeur()*(ligne17+norm_pente(C(i-1,j+1,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1000.                     C(i,j+1,k).retour_valeur()*(ligne17+norm_pente(C(i,j+1,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1001.                     C(i+1,j+1,k).retour_valeur()*(ligne17+norm_pente(C(i+1,j+1,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1002.  
  1003.                     C(i-1,j+2,k).retour_valeur()*(ligne18+norm_pente(C(i-1,j+2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1004.                     C(i,j+2,k).retour_valeur()*(ligne18+norm_pente(C(i,j+2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1005.                     C(i+1,j+2,k).retour_valeur()*(ligne18+norm_pente(C(i+1,j+2,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1006.  
  1007.                     C(i-1,j+3,k).retour_valeur()*(ligne19+norm_pente(C(i-1,j+3,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1008.                     C(i,j+3,k).retour_valeur()*(ligne19+norm_pente(C(i,j+3,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1009.                     C(i+1,j+3,k).retour_valeur()*(ligne19+norm_pente(C(i+1,j+3,k).retour_pente()))*(sens_pente(C(i-1,j-4,k).retour_pente()))+
  1010.  
  1011.                     C(i-1,j+4,k).retour_valeur()*(ligne20)*(sens_pente(C(i-1,j+4,k).retour_pente()))+
  1012.                     C(i,j+4,k).retour_valeur()*(ligne20)*(sens_pente(C(i,j+4,k).retour_pente()))+
  1013.                     C(i+1,j+4,k).retour_valeur()*(ligne20)*(sens_pente(C(i+1,j+4,k).retour_pente()))+
  1014.  
  1015.                     C(i-1,j+5,k).retour_valeur()*(ligne21)*(sens_pente(C(i-1,j+5,k).retour_pente()))+
  1016.                     C(i,j+5,k).retour_valeur()*(ligne21)*(sens_pente(C(i,j+5,k).retour_pente()))+
  1017.                     C(i+1,j+5,k).retour_valeur()*(ligne21)*(sens_pente(C(i+1,j+5,k).retour_pente()))+
  1018.  
  1019.                     C(i-1,j+6,k).retour_valeur()*(ligne22)*(sens_pente(C(i-1,j+6,k).retour_pente()))+
  1020.                     C(i,j+6,k).retour_valeur()*(ligne22)*(sens_pente(C(i,j+6,k).retour_pente()))+
  1021.                     C(i+1,j+6,k).retour_valeur()*(ligne22)*(sens_pente(C(i+1,j+6,k).retour_pente()))+
  1022.  
  1023.                     C(i-1,j+7,k).retour_valeur()*(ligne23)*(sens_pente(C(i-1,j+7,k).retour_pente()))+
  1024.                     C(i,j+7,k).retour_valeur()*(ligne23)*(sens_pente(C(i,j+7,k).retour_pente()))+
  1025.                     C(i+1,j+7,k).retour_valeur()*(ligne23)*(sens_pente(C(i+1,j+7,k).retour_pente()))+
  1026.  
  1027.                     C(i-1,j+8,k).retour_valeur()*(ligne24)*(sens_pente(C(i-1,j+8,k).retour_pente()))+
  1028.                     C(i,j+8,k).retour_valeur()*(ligne24)*(sens_pente(C(i,j+8,k).retour_pente()))+
  1029.                     C(i+1,j+8,k).retour_valeur()*(ligne24)*(sens_pente(C(i+1,j+8,k).retour_pente()));
  1030.  
  1031.                     nvaleur=C(i,j,k).retour_valeur()+normalisation(somme1)+
  1032.                     norm_pluie(pluie)+concavexite;
  1033.                     C(i,j,k+1).set_valeur(nvaleur);
  1034.  
  1035.                     if(C(i,j,k).retour_termite()==1)
  1036.                     {
  1037.                         C(i,j,k).set_valeur(0);
  1038.                     }
  1039.  
  1040.                     if(C(i,j,k+1).retour_valeur()<0)   
  1041.                         C(i,j,k+1).set_valeur(0);
  1042.                     if(C(i,j,k+1).retour_valeur()>valeur_max)
  1043.                         C(i,j,k+1).set_valeur(valeur_max);
  1044.                     if(j==0)
  1045.                     {
  1046.                         for(ii=0; ii<imax; ii++)
  1047.                         {
  1048.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1049.                             for(n=0; n<=13; n++)
  1050.                             {
  1051.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1052.                             }
  1053.                         }
  1054.                     }
  1055.                     if(j==1)
  1056.                     {
  1057.                         for(ii=0; ii<imax; ii++)
  1058.                         {
  1059.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1060.                             for(n=0; n<=12; n++)
  1061.                             {
  1062.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1063.                             }
  1064.                         }
  1065.                     }
  1066.                     if(j==2)
  1067.                     {
  1068.                         for(ii=0; ii<imax; ii++)
  1069.                         {
  1070.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1071.                             for(n=0; n<=11; n++)
  1072.                             {
  1073.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1074.                             }
  1075.                         }
  1076.                     }
  1077.                     if(j==3)
  1078.                     {
  1079.                         for(ii=0; ii<imax; ii++)
  1080.                         {
  1081.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1082.                             for(n=0; n<=10; n++)
  1083.                             {
  1084.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1085.                             }
  1086.                         }
  1087.                     }
  1088.                     if(j==4)
  1089.                     {
  1090.                         for(ii=0; ii<imax; ii++)
  1091.                         {
  1092.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1093.                             for(n=0; n<=9; n++)
  1094.                             {
  1095.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1096.                             }
  1097.                         }
  1098.                     }
  1099.                     if(j==5)
  1100.                     {
  1101.                         for(ii=0; ii<imax; ii++)
  1102.                         {
  1103.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1104.                             for(n=0; n<=8; n++)
  1105.                             {
  1106.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1107.                             }
  1108.                         }
  1109.                     }
  1110.                     if(j==6)
  1111.                     {
  1112.                         for(ii=0; ii<imax; ii++)
  1113.                         {
  1114.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1115.                             for(n=0; n<=7; n++)
  1116.                             {
  1117.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1118.                             }
  1119.                         }
  1120.                     }
  1121.                     if(j==7)
  1122.                     {
  1123.                         for(ii=0; ii<imax; ii++)
  1124.                         {
  1125.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1126.                             for(n=0; n<=6; n++)
  1127.                             {
  1128.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1129.                             }
  1130.                         }
  1131.                     }
  1132.                     if(j==8)
  1133.                     {
  1134.                         for(ii=0; ii<imax; ii++)
  1135.                         {
  1136.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1137.                             for(n=0; n<=5; n++)
  1138.                             {
  1139.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1140.                             }
  1141.                         }
  1142.                     }
  1143.                     if(j==9)
  1144.                     {
  1145.                         for(ii=0; ii<imax; ii++)
  1146.                         {
  1147.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1148.                             for(n=0; n<=4; n++)
  1149.                             {
  1150.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1151.                             }
  1152.                         }
  1153.                     }
  1154.                     if(j==10)
  1155.                     {
  1156.                         for(ii=0; ii<imax; ii++)
  1157.                         {
  1158.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1159.                             for(n=0; n<=3; n++)
  1160.                             {
  1161.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1162.                             }
  1163.                         }
  1164.                     }
  1165.                     if(j==11)
  1166.                     {
  1167.                         for(ii=0; ii<imax; ii++)
  1168.                         {
  1169.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1170.                             for(n=0; n<=2; n++)
  1171.                             {
  1172.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1173.                             }
  1174.                         }
  1175.                     }
  1176.                     if(j==12)
  1177.                     {
  1178.                         for(ii=0; ii<imax; ii++)
  1179.                         {
  1180.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1181.                             for(n=0; n<=1; n++)
  1182.                             {
  1183.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1184.                             }
  1185.                         }
  1186.                     }
  1187.                     if(j==13)
  1188.                     {
  1189.                         for(ii=0; ii<imax; ii++)
  1190.                         {
  1191.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1192.                             for(n=0; n<=0; n++)
  1193.                             {
  1194.                                 C(ii,(j-14)+n,k).set_altitude(C(ii,(j-15)+n,k).retour_altitude()-(pente/resolution));
  1195.                             }
  1196.                         }
  1197.                     }
  1198.                     if(j==14)
  1199.                     {
  1200.                         for(ii=0; ii<imax; ii++)
  1201.                         {
  1202.                             C(ii,j-15,k).set_altitude(C(ii,j-16,k).retour_altitude()-(pente/resolution));
  1203.                         }
  1204.                     }
  1205.                     if(j==jmax-1)
  1206.                     {
  1207.                         for(ii=0; ii<imax; ii++)
  1208.                         {
  1209.                             for(n=0; n<=14; n++)
  1210.                             {
  1211.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1212.                             }
  1213.                         }
  1214.                     }
  1215.                     if(j==jmax-2)
  1216.                     {
  1217.                         for(ii=0; ii<imax; ii++)
  1218.                         {
  1219.                             for(n=0; n<=13; n++)
  1220.                             {
  1221.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1222.                             }
  1223.                         }
  1224.                     }
  1225.                     if(j==jmax-3)
  1226.                     {
  1227.                         for(ii=0; ii<imax; ii++)
  1228.                         {
  1229.                             for(n=0; n<=12; n++)
  1230.                             {
  1231.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1232.                             }
  1233.                         }
  1234.                     }
  1235.                     if(j==jmax-4)
  1236.                     {
  1237.                         for(ii=0; ii<imax; ii++)
  1238.                         {
  1239.                             for(n=0; n<=11; n++)
  1240.                             {
  1241.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1242.                             }
  1243.                         }
  1244.                     }
  1245.                     if(j==jmax-5)
  1246.                     {
  1247.                         for(ii=0; ii<imax; ii++)
  1248.                         {
  1249.                             for(n=0; n<=10; n++)
  1250.                             {
  1251.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1252.                             }
  1253.                         }
  1254.                     }
  1255.                     if(j==jmax-6)
  1256.                     {
  1257.                         for(ii=0; ii<imax; ii++)
  1258.                         {
  1259.                             for(n=0; n<=9; n++)
  1260.                             {
  1261.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1262.                             }
  1263.                         }
  1264.                     }
  1265.                     if(j==jmax-7)
  1266.                     {
  1267.                         for(ii=0; ii<imax; ii++)
  1268.                         {
  1269.                             for(n=0; n<=8; n++)
  1270.                             {
  1271.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1272.                             }
  1273.                         }
  1274.                     }
  1275.                     if(j==jmax-8)
  1276.                     {
  1277.                         for(ii=0; ii<imax; ii++)
  1278.                         {
  1279.                             for(n=0; n<=7; n++)
  1280.                             {
  1281.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1282.                             }
  1283.                         }
  1284.                     }
  1285.                     if(j==jmax-9)
  1286.                     {
  1287.                         for(ii=0; ii<imax; ii++)
  1288.                         {
  1289.                             for(n=0; n<=6; n++)
  1290.                             {
  1291.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1292.                             }
  1293.                         }
  1294.                     }
  1295.                     if(j==jmax-10)
  1296.                     {
  1297.                         for(ii=0; ii<imax; ii++)
  1298.                         {
  1299.                             for(n=0; n<=5; n++)
  1300.                             {
  1301.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1302.                             }
  1303.                         }
  1304.                     }
  1305.                     if(j==jmax-11)
  1306.                     {
  1307.                         for(ii=0; ii<imax; ii++)
  1308.                         {
  1309.                             for(n=0; n<=4; n++)
  1310.                             {
  1311.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1312.                             }
  1313.                         }
  1314.                     }
  1315.                     if(j==jmax-12)
  1316.                     {
  1317.                         for(ii=0; ii<imax; ii++)
  1318.                         {
  1319.                             for(n=0; n<=3; n++)
  1320.                             {
  1321.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1322.                             }
  1323.                         }
  1324.                     }
  1325.                     if(j==jmax-13)
  1326.                     {
  1327.                         for(ii=0; ii<imax; ii++)
  1328.                         {
  1329.                             for(n=0; n<=2; n++)
  1330.                             {
  1331.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1332.                             }
  1333.                         }
  1334.                     }
  1335.                     if(j==jmax-14)
  1336.                     {
  1337.                         for(ii=0; ii<imax; ii++)
  1338.                         {
  1339.                             for(n=0; n<=1; n++)
  1340.                             {
  1341.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1342.                             }
  1343.                         }
  1344.                     }
  1345.                     if(j==jmax-15)
  1346.                     {
  1347.                         for(ii=0; ii<imax; ii++)
  1348.                         {
  1349.                             for(n=0; n<=0; n++)                            
  1350.  
  1351.                             {
  1352.                                 C(ii,(j+15)-n,k).set_altitude(C(ii,(j+16)-n,k).retour_altitude()+(pente/resolution));
  1353.                             }
  1354.                         }
  1355.                     }
  1356.  
  1357.                     if(previsual)
  1358.                     {
  1359.                         switch(C(i,j,k).retour_valeur())
  1360.                         {
  1361.                             case(0):
  1362.                             {
  1363.                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1364.                             }
  1365.                                 break;
  1366.                             case(1):
  1367.                             {
  1368.                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1369.                             }
  1370.                                 break;
  1371.                             case(2):
  1372.                             {
  1373.                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1374.                             }
  1375.                                 break;
  1376.                             case(3):
  1377.                             {
  1378.                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1379.                             }
  1380.                                 break;
  1381.                             case(4):
  1382.                             {
  1383.                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1384.                             }
  1385.                                 break;
  1386.                             case(5):
  1387.                             {
  1388.                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1389.                             }
  1390.                                 break;
  1391.                             case(6):
  1392.                             {
  1393.                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1394.                             }
  1395.                                 break;
  1396.                             case(7):
  1397.                             {
  1398.                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1399.                             }
  1400.                                 break;
  1401.                             case(8):
  1402.                             {
  1403.                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1404.                             }
  1405.                                 break;
  1406.                             case(9):
  1407.                             {
  1408.                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1409.                             }
  1410.                                 break;
  1411.                             case(10):
  1412.                             {
  1413.                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1414.                             }
  1415.                                 break;
  1416.                             case(11):
  1417.                             {
  1418.                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1419.                             }
  1420.                                 break;
  1421.                             case(12):
  1422.                             {
  1423.                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1424.                             }
  1425.                                 break;
  1426.                             case(13):
  1427.                             {
  1428.                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1429.                             }
  1430.                                 break;
  1431.                             case(14):
  1432.                             {
  1433.                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1434.                             }
  1435.                                 break;
  1436.                             case(15):
  1437.                             {
  1438.                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1439.                             }
  1440.                                 break;
  1441.                             default:
  1442.                                 break;
  1443.                         }
  1444.                     }
  1445.  
  1446.                     //temp_tick=i+1;
  1447.                     //tick=inttostring(temp_tick);
  1448.                     //Emperor_SetGadgetAttr(Fuelgauge1, tick);
  1449.                 }
  1450.  
  1451.                 interrupt=IO_boucle();
  1452.                 if(interrupt)
  1453.                 {
  1454.                     printf("interruption\n");
  1455.                     goto interruption;
  1456.                 }
  1457.  
  1458.                 temp_tick=j+1;
  1459.                 tick=inttostring(temp_tick);
  1460.                 Emperor_SetGadgetAttr(Fuelgauge2, tick);
  1461.             }
  1462.             temp_tick=k+1;
  1463.             tick=inttostring(temp_tick);
  1464.             Emperor_SetGadgetAttr(Fuelgauge3, tick);
  1465.         }
  1466.     }
  1467.     interruption:
  1468.     if(interrupt)
  1469.     {
  1470.         SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  1471.         SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  1472.         DoMethod(winobj, WM_CLOSE);
  1473.         win=NULL;
  1474.         winobj=NULL;
  1475.     }
  1476.  
  1477. /*mettre à jour les gadgets concernés pour la seconde phase*/
  1478.  
  1479.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  1480.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  1481.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1482.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1483.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1484.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1485.  
  1486. /*fin de mise à jour*/
  1487.  
  1488. /*reception des signaux après calcul*/
  1489.  
  1490.     if(!previsual)
  1491.     {
  1492.         win = RA_OpenWindow (winobj);
  1493.         winport = win->RPort;
  1494.         winport_noir = *win->RPort;
  1495.         winport_blanc = *win->RPort;
  1496.         winport_gris1 = *win->RPort;
  1497.         winport_gris2 = *win->RPort;
  1498.         winport_gris3 = *win->RPort;
  1499.         winport_gris4 = *win->RPort;
  1500.         winport_gris5 = *win->RPort;
  1501.         winport_gris6 = *win->RPort;
  1502.         winport_gris7 = *win->RPort;
  1503.         winport_gris8 = *win->RPort;
  1504.         winport_gris9 = *win->RPort;
  1505.         winport_gris10 = *win->RPort;
  1506.         winport_gris11 = *win->RPort;
  1507.         winport_gris12 = *win->RPort;
  1508.         winport_gris13 = *win->RPort;
  1509.         winport_gris14 = *win->RPort;
  1510.         SetAPen( &winport_noir, noir );
  1511.         SetAPen( &winport_blanc, blanc );
  1512.         SetAPen( &winport_gris1, gris1 );
  1513.         SetAPen( &winport_gris2, gris2 );
  1514.         SetAPen( &winport_gris3, gris3 );
  1515.         SetAPen( &winport_gris4, gris4 );
  1516.         SetAPen( &winport_gris5, gris5 );
  1517.         SetAPen( &winport_gris6, gris6 );
  1518.         SetAPen( &winport_gris7, gris7 );
  1519.         SetAPen( &winport_gris8, gris8 );
  1520.         SetAPen( &winport_gris9, gris9 );
  1521.         SetAPen( &winport_gris10, gris10 );
  1522.         SetAPen( &winport_gris11, gris11 );
  1523.         SetAPen( &winport_gris12, gris12 );
  1524.         SetAPen( &winport_gris13, gris13 );
  1525.         SetAPen( &winport_gris14, gris14 );
  1526.     }
  1527.     fermer=FALSE;
  1528.     Emperor_Input=0L;
  1529.     do
  1530.     {
  1531.         while((Emperor_Input = RA_HandleInput(WindowObject1, &Emperor_Code)) != WMHI_LASTMSG)
  1532.         {
  1533.             //printf("input reçu: %d\n", Emperor_Input);
  1534.             switch(Emperor_Input & WMHI_CLASSMASK)
  1535.             {
  1536.                 case WMHI_GADGETUP:
  1537.                     switch(Emperor_Input & WMHI_GADGETMASK)
  1538.                     {
  1539.                         case 39:
  1540.                             Button3_GadgetUp_Event();
  1541.                             break;
  1542.                         case 42:
  1543.                             //Button6_GadgetUp_Event();
  1544.                             //printf("case fermer: %d\n");
  1545.                             DoMethod(winobj, WM_CLOSE);
  1546.                             win=NULL;
  1547.                             winobj=NULL;
  1548.                             fermer=TRUE;
  1549.                             break;
  1550.                         case 46:
  1551.                             //Button7_GadgetUp_Event();
  1552.                             for(k=kmax-1; k>=0; k--)
  1553.                             {
  1554.                                 for(j=0; j<jmax; j++)
  1555.                                 {
  1556.                                     for(i=0;i<imax; i++)
  1557.                                     {
  1558.                                         switch(C(i,j,k).retour_valeur())
  1559.                                         {
  1560.                                             case(0):
  1561.                                             {
  1562.                                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1563.                                             }
  1564.                                                 break;
  1565.                                             case(1):
  1566.                                             {
  1567.                                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1568.                                             }
  1569.                                                 break;
  1570.                                             case(2):
  1571.                                             {
  1572.                                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1573.                                             }
  1574.                                                 break;
  1575.                                             case(3):
  1576.                                             {
  1577.                                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1578.                                             }
  1579.                                                 break;
  1580.                                             case(4):
  1581.                                             {
  1582.                                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1583.                                             }
  1584.                                                 break;
  1585.                                             case(5):
  1586.                                             {
  1587.                                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1588.                                             }
  1589.                                                 break;
  1590.                                             case(6):
  1591.                                             {
  1592.                                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1593.                                             }
  1594.                                                 break;
  1595.                                             case(7):
  1596.                                             {
  1597.                                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1598.                                             }
  1599.                                                 break;
  1600.                                             case(8):
  1601.                                             {
  1602.                                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1603.                                             }
  1604.                                                 break;
  1605.                                             case(9):
  1606.                                             {
  1607.                                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1608.                                             }
  1609.                                                 break;
  1610.                                             case(10):
  1611.                                             {
  1612.                                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1613.                                             }
  1614.                                                 break;
  1615.                                             case(11):
  1616.                                             {
  1617.                                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1618.                                             }
  1619.                                                 break;
  1620.                                             case(12):
  1621.                                             {
  1622.                                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1623.                                             }
  1624.                                                 break;
  1625.                                             case(13):
  1626.                                             {
  1627.                                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1628.                                             }
  1629.                                                 break;
  1630.                                             case(14):
  1631.                                             {
  1632.                                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1633.                                             }
  1634.                                                 break;
  1635.                                             case(15):
  1636.                                             {
  1637.                                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1638.                                             }
  1639.                                                 break;
  1640.                                             default:
  1641.                                                 break;
  1642.                                         }
  1643.                                     }
  1644.                                 }
  1645.                                 temp_tick=k;
  1646.                                 tick=inttostring(temp_tick);
  1647.                                 Emperor_SetGadgetAttr(Fuelgauge3, tick);
  1648.                             }
  1649.                             break;
  1650.                         case 47:
  1651.                             //Button8_GadgetUp_Event();
  1652.                             for(k=0; k<kmax; k++)
  1653.                             {
  1654.                                 for(j=0; j<jmax; j++)
  1655.                                 {
  1656.                                     for(i=0;i<imax; i++)
  1657.                                     {
  1658.                                         switch(C(i,j,k).retour_valeur())
  1659.                                         {                                            
  1660.                                             case(0):
  1661.                                             {
  1662.                                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1663.                                             }
  1664.                                                 break;
  1665.                                             case(1):
  1666.                                             {
  1667.                                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1668.                                             }
  1669.                                                 break;
  1670.                                             case(2):
  1671.                                             {
  1672.                                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1673.                                             }
  1674.                                                 break;
  1675.                                             case(3):
  1676.                                             {
  1677.                                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1678.                                             }
  1679.                                                 break;
  1680.                                             case(4):
  1681.                                             {
  1682.                                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1683.                                             }
  1684.                                                 break;
  1685.                                             case(5):
  1686.                                             {
  1687.                                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1688.                                             }
  1689.                                                 break;
  1690.                                             case(6):
  1691.                                             {
  1692.                                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1693.                                             }
  1694.                                                 break;
  1695.                                             case(7):
  1696.                                             {
  1697.                                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1698.                                             }
  1699.                                                 break;
  1700.                                             case(8):
  1701.                                             {
  1702.                                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1703.                                             }
  1704.                                                 break;
  1705.                                             case(9):
  1706.                                             {
  1707.                                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1708.                                             }
  1709.                                                 break;
  1710.                                             case(10):
  1711.                                             {
  1712.                                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1713.                                             }
  1714.                                                 break;
  1715.                                             case(11):
  1716.                                             {
  1717.                                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1718.                                             }
  1719.                                                 break;
  1720.                                             case(12):
  1721.                                             {
  1722.                                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1723.                                             }
  1724.                                                 break;
  1725.                                             case(13):
  1726.                                             {
  1727.                                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1728.                                             }
  1729.                                                 break;
  1730.                                             case(14):
  1731.                                             {
  1732.                                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1733.                                             }
  1734.                                                 break;
  1735.                                             case(15):
  1736.                                             {
  1737.                                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1738.                                             }
  1739.                                                 break;
  1740.                                             default:
  1741.                                                 break;
  1742.                                         }
  1743.                                     }
  1744.                                 }
  1745.                                 temp_tick=k+1;
  1746.                                 tick=inttostring(temp_tick);
  1747.                                 Emperor_SetGadgetAttr(Fuelgauge3, tick);
  1748.                             }
  1749.                             break;
  1750.                         default:
  1751.                             fermer=FALSE;
  1752.                             break;
  1753.                     }
  1754.                 default:
  1755.                     break;
  1756.             }
  1757.         }
  1758.     }
  1759.     while(fermer==FALSE);
  1760.  
  1761.     SetGadgetAttrs(String1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1762.     SetGadgetAttrs(Integer1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1763.     SetGadgetAttrs(Integer2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1764.     SetGadgetAttrs(Integer3, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1765.     SetGadgetAttrs(Integer4, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1766.     SetGadgetAttrs(Integer5, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1767.     SetGadgetAttrs(Integer6, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1768.     SetGadgetAttrs(Button1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1769.     SetGadgetAttrs(Button2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1770.     SetGadgetAttrs(Slider1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1771.     SetGadgetAttrs(Checkbox1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1772.     SetGadgetAttrs(Checkbox2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1773.  
  1774. /*fin de reception*/
  1775.  
  1776.     int choix_gen[101]={0};
  1777.     char *pgm=0;
  1778.     for(i=0; i<=kmax; i++)
  1779.     {
  1780.         choix_gen[i]=i;
  1781.     }
  1782.     for(l=0; l<kmax; l++)
  1783.     {
  1784.         k=choix_gen[l];
  1785.         pgm=new char[10];
  1786.         strcpy(pgm, pioche_pgm(k));
  1787.         fz = fopen(pgm, "w");
  1788.         fputs ("P2\n", fz);
  1789.         fputs ("# ", fz);
  1790.         fputs(pgm, fz);
  1791.         fputs ("  \n", fz);
  1792.         fputs (inttostring(imax), fz);
  1793.         fputs ("  ", fz);
  1794.         fputs (inttostring(jmax), fz);
  1795.         fputs ("  \n", fz);
  1796.         fputs (inttostring(valeur_max+1), fz);
  1797.         fputs ("  \n", fz);
  1798.         for(j=0; j<jmax; j++)
  1799.         {
  1800.             for(i=0; i<imax; i++)
  1801.             {
  1802.                 fputs (inttostring((C(i,j,k).retour_valeur()-valeur_max)*(-1)), fz);
  1803.                 fputs ("  ", fz);
  1804.             }
  1805.             fputs (" \n", fz);
  1806.         }
  1807.         delete [] pgm;
  1808.         fclose(fz);
  1809.     }
  1810.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1811.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1812.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1813.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1814. }  
  1815.  
  1816. void Window1_Iconify_Event(void)
  1817. {
  1818.     Emperor_IconifyWindow_Window1();
  1819. }
  1820.  
  1821. void Window1_Uniconify_Event(void)
  1822. {    
  1823.     Emperor_UniconifyWindow_Window1();
  1824. }
  1825.  
  1826. void Button3_GadgetUp_Event(void)
  1827. {
  1828. }
  1829.  
  1830. void Button4_GadgetUp_Event(void)
  1831. {
  1832. }
  1833.  
  1834. void Button5_GadgetUp_Event(void)
  1835. {
  1836. }
  1837.  
  1838. void Button6_GadgetUp_Event(void)
  1839. {
  1840. }
  1841.  
  1842. void Button7_GadgetUp_Event(void)
  1843. {
  1844. }
  1845.  
  1846. void Button8_GadgetUp_Event(void)
  1847. {
  1848. }
  1849.  
  1850.